package com.haolp.sys.service.impl;

import com.haolp.sys.service.SysLogService;
import com.haolp.sys.common.vo.PageObjectVO;
import com.haolp.sys.common.exception.ServiceException;
import com.haolp.sys.dao.SysLogDao;
import com.haolp.sys.pojo.SysLog;
import com.haolp.sys.service.SysLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Author 韩
 * @Date: 2021/10/06/ 14:18
 * @Description
 */
/*
 * 业务层对象
 * 处理核心业务（分页查询日志记录）
 * 处理非核心业务（添加日志，权限，缓存，事务...）
 *
 * */
@Service
public class SysLogServiceImpl implements SysLogService {
    @Autowired
    private SysLogDao sysLogDao;
    @Override
    public PageObjectVO<SysLog> findPageObjects(String username, Integer pageCurrent) {
        //1.校验数据是否合法
        if (pageCurrent==null || pageCurrent<1)
            throw new IllegalArgumentException("页码值不正确");
        //2.基于用户查询总记录数并进行校验
        int rowCount = sysLogDao.getRowCount(username);
        if (rowCount==0)throw new ServiceException("没有找到对应记录");
        //3.查询当前页记录
        int pageSize=5;
        //起始位置计算公式
        int startIndex = (pageCurrent-1)*pageSize;
        /*0         5
         * 5         5
         * 10        5*/
        List<SysLog> records = sysLogDao.findPageObjects(username, startIndex, pageSize);
        //总页数
//        int pageCount=(rowCount-1)/pageSize+1;
//        //4.封装查询结果并返回
//        PageObjectVO<SysLog> pageObjectVO = new PageObjectVO<>();
//        pageObjectVO.setPageCount(pageCount).setPageCurrent(pageCurrent).setPageSize(pageSize).setRecords(records).setRowCount(rowCount);
//        return pageObjectVO;

        return new PageObjectVO<>(pageCurrent,pageSize,rowCount,records);
    }

    @Override
    public int deleteObjects(Integer[] ids) {
        //1.参数效验
        if(ids==null||ids.length==0)
            throw new IllegalArgumentException("请先选择");
        //2.基于参数id执行删除操作
        int rows=0;
        try {
            rows = sysLogDao.deleteByIds(ids);
        }catch (Throwable e){
            throw new ServiceException("系统维护中....");
        }
        if(rows==0)
            throw new ServiceException("记录可能已经不存在");
        //3.返回删除结果
        return rows;
    }
}